import MarkdownIt from "markdown-it";
import hljs from "highlight.js";
import store from "@/store";

const common = {
    namespaced: true,
    state: {
        // 网页当前基础路径
        currentBaseUrl: `${window.location.protocol}//${window.location.hostname}:${window.location.port}`,
        // 是否是微信环境，gdk 暂时不需要自己判断
        // isWechat: true,
        // weixin-js-sdk wechat.config()是否初始化成功
        isWechatJsapiInit: false,
        // 底部导航栏高度（px），App.vue加载后装载
        bottomBarHeight: 0,
        // 窗口高度
        windowInnerHeight: window.innerHeight,
        // 窗口宽度
        windowInnerWidth: window.innerWidth,
        // 当前环境是否支持sse，App.vue加载后装载
        supportSSE: false,
        // 当前sse连接客户端
        sseClient: null,
        // 标记当前是否正在创建/已有sse连接
        hasSseClient: false,
        // markdown转html转换器
        md: new MarkdownIt({
            // 启用 emoji 插件
            emoji: true,
            // 设置代码块的语言
            highlight: function (str, lang) {
                if (lang && hljs.getLanguage(lang)) {
                    return '<pre class="hljs"><code>' +
                        hljs.highlight(lang, str, true).value +
                        '</code></pre>';
                }

                return '<pre class="hljs"><code>' + store.state.common.md.utils.escapeHtml(str) + '</code></pre>';
            }
        })
    },

    mutations: {
        // 更新传入的字段
        update(state, data) {
            for (const column in data) {
                state[column] = data[column]
            }
        },

        // 清空sse连接
        clearSse(state) {
            state.sseClient = null
            state.hasSseClient = false
        },
    },

    actions: {},

    getters: {}
};

export default common;
